//
// Description: 848. 有向图的拓扑序列
// Created by Loading on 2022/5/15.
//

#include <bits/stdc++.h>

using namespace std;

constexpr int N = 1e5 + 10;

int h[N], e[N], ne[N], idx;
// 入度数组
int in[N];
int n;

// 拓扑序列
vector<int> res;

// 增加一条边
void add(int a, int b) {
    e[idx] = b;
    ne[idx] = h[a];
    h[a] = idx++;
}

// 拓扑排序
bool top_sort() {
    queue<int> q;
    // 入度为0的节点入队列
    for (int i = 1; i <= n; ++i) {
        if (in[i] == 0) {
            q.emplace(i);
        }
    }

    while (!q.empty()) {
        int x = q.front();
        q.pop();
        res.push_back(x);
        for (int i = h[x]; i != -1; i = ne[i]) {
            int u = e[i];
            // 入度 - 1
            --in[u];
            // 入度变为0，入队列
            if (in[u] == 0) {
                q.emplace(u);
            }
        }
    }

    // 若存在拓扑序列，则长度一定是 n
    return res.size() == n;
}

int main() {
    int m;
    cin >> n >> m;
    memset(h, -1, sizeof h);

    for (int i = 0; i < m; ++i) {
        int a, b;
        cin >> a >> b;
        add(a, b);
        // 入度 + 1
        ++in[b];
    }

    if (top_sort()) {
        for (auto x : res) {
            cout << x << ' ';
        }
        cout << endl;
    } else {
        cout << -1 << endl;
    }

    return 0;
}